home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Interactive 7
/
PC World Interactive 7.iso
/
program
/
qbprog.EXE
/
MODEM.KOD
< prev
next >
Wrap
Text File
|
1995-10-18
|
65KB
|
2,477 lines
'QBASIC'de çalìƒìr
'ÿletiƒim bufferi bu dilde standart 512 byte'dìr, yavaƒ bir hìz seçiniz
'QuickBasic de çalìƒmasì için ise versiyon 7.1 QBX /L QBX /C:32000
' versiyon 4.5 QB /L QB /C:32000
' ƒeklinde yüklenmelidir.
'Her türlü modemde çalìƒan iletiƒim programì
'Com1,....Com8 arasì seri çìkìƒ
'IRQ2,....IRQ7 arasì kesme istemi
'2400,...115200 Bps hìz
'Yapìm : Gürol DEMÿR, Mersin (ÿçel), Aºustos 1995
DECLARE SUB TutanakAc ()
DECLARE SUB OtomatikSec ()
DECLARE SUB AlmaDizinineGec ()
DECLARE SUB ProtokolOku ()
DECLARE SUB DosyaOgren ()
DECLARE SUB DosyaGonder ()
DECLARE SUB DosyaAl ()
DECLARE SUB ProtokolSec ()
DECLARE SUB ProtokolDefteri ()
DECLARE SUB TelefonDefteri ()
DECLARE SUB TerminalChatGelen ()
DECLARE SUB TerminalChatGiden ()
DECLARE SUB TerminalGidenler ()
DECLARE SUB TerminalGelenler ()
DECLARE SUB TerminalGelenleriYorumla ()
DECLARE SUB TerminalMakrolar ()
DECLARE SUB MesajYazTerminal ()
DECLARE SUB Pencere ()
DECLARE SUB EkranSakla ()
DECLARE SUB EkranKoy ()
DECLARE SUB EkranAc ()
DECLARE SUB EkranUstuYaz ()
DECLARE SUB ModemKapa ()
DECLARE SUB ModemAc ()
DECLARE SUB ModemHangUp ()
DECLARE SUB MakroTus ()
DECLARE SUB MakroTusOku ()
DECLARE SUB DosyaAc ()
DECLARE SUB Artma2 ()
DECLARE SUB Eksilme2 ()
DECLARE SUB RenkAyar ()
DECLARE SUB Kullanan ()
DECLARE SUB Terminal ()
DECLARE SUB Secim ()
DECLARE SUB AdresSec ()
DECLARE SUB PortSec ()
DECLARE SUB EkranSec ()
DECLARE SUB Modemsetup ()
DECLARE SUB AnsiyeBak ()
DECLARE SUB DizinAc ()
DECLARE SUB MesajYaz ()
DECLARE SUB ConfigOku ()
DECLARE SUB ConfigAc ()
DECLARE SUB ConfigYaz ()
DECLARE SUB BaudSec ()
DECLARE SUB Dizinler ()
DECLARE SUB BaudSec ()
DECLARE SUB IrqSec ()
DECLARE SUB ModemBul ()
DECLARE SUB Kurulumlar ()
DECLARE SUB Eksilme ()
DECLARE SUB Artma ()
DECLARE SUB Verialma ()
DECLARE SUB IlkBaslama ()
DECLARE SUB Ilkkurulma ()
DECLARE SUB EkranAdresiBul ()
DECLARE SUB Elveda ()
DECLARE SUB ArkaPlanCiz ()
DECLARE SUB HareketliMenu ()
DECLARE SUB CerceveCiz ()
COMMON SHARED MenuYatay, MenuDikey, MenuGenis, MenuYuksek, MenuSecim$
COMMON SHARED VerialDikey, VeriAlYatay, Verial$, VeriTipi, VerialBoy
COMMON SHARED EkranAdresi, Tus$, Hata, Mesaj$, Veri$, Veri1$, Z, JL
COMMON SHARED Kim$, Tel$, IRQ$, Baud$, Adres$, PortNo$, Ekran$, Katar$
COMMON SHARED Kosul$, Cevap$, Echo$, Ses$, Yatay, Ekra$, Port, Ek$
COMMON SHARED DosyaAd$, DosyaBoy, Satir, Sutun, RR, Muzik$, Ekran
COMMON SHARED HatDolu, Gelen$, Cer$, GelGid$, Z$, Kapasite
COMMON SHARED Tercih$, Oto$, Mkr$, Sontel, Tutanak$, Makro, Oto
COMMON SHARED DosyaAdi$, DosyaBoyu
Kapasite = 255
DIM SHARED Sec$(Kapasite), Sec1$(10), Renk(10), Makro$(36), Al$(4), Dizin$(5)
DIM SHARED Sakla(30), Gid$(10), Gel$(10), Chat(2), Protokol$(7), Mak$(3)
KEY 6, CHR$(242): 'Küçük büyük harf deºiƒim
ON ERROR GOTO Hatalar
CALL IlkBaslama
CALL Elveda
END
Hatalar:
IF Hata = 1 THEN RESUME NEXT
IF Hata = 2 THEN Hata = 3: RESUME NEXT
IF Hata = 4 THEN Hata = 5: RESUME NEXT
IF ERR = 57 THEN RESUME
IF Hata = 1 THEN RESUME NEXT
CALL ModemKapa
COLOR 7, 1
CLS
Mesaj$ = "!Lütfen bu hatayì bildirin !! Hata No=" + STR$(ERR)
IF Hata = 3 THEN Mesaj$ = "!Dizin Oluƒturma Hatasì !!"
CALL MesajYaz
END
AnsiYuklumu:
DATA &H50
DATA &H53
DATA &H1E
DATA &HB8,&H00,&H1A
DATA &HCD,&H2F
DATA &HBB,&H00,&HB9
DATA &H8E,&HDB
DATA &HA2,&H00,&H00
DATA &H1F
DATA &H5B
DATA &H58
DATA &HCB
'Yeni interrupt rutini
YeniKesme:
DATA &H50 : 'PUSH AX
DATA &H1E : 'PUSH DS
DATA &HB8, 0, &HB9 : 'MOV AX, B900
DATA &H8E, &HD8 : 'MOV DS, AX
DATA &H88, &H26, 2, 0 : 'MOV [0002], AH
DATA &HB0, &H20 : 'MOV AL,20
DATA &HE6, &H20 : 'MOV 20,AL
DATA &H1F : 'POP DS
DATA &H58 : 'POP AX
DATA &HCF : 'IRET
'ÿnterrupt Kontrol Yazmacìnìn IRQ'ya izin verme rutini
IRQSerbest:
DATA &H50 : 'PUSH AX
DATA &H53 : 'PUSH BX
DATA &H51 : 'PUSH CX
DATA &H1E : 'PUSH DS
DATA &HFA : 'CLI
DATA &HB8, 0, &HB9 : 'MOV AX,B900
DATA &H8E, &HD8 : 'MOV DS,AX
DATA &H31, &HC9 : 'XOR CX,CX
DATA &HB1, 2 : 'MOV CL,02
DATA &HBB, 1, 0 : 'MOV BX,0001
DATA &HD3, &HE3 : 'SHL BX,CL
DATA &HF7, &HD3 : 'NOT BX
DATA &HE4, &HA1 : 'IN AL,A1
DATA &HA2, 0, 0 : 'MOV [0000],AL
DATA &H20, &HF8 : 'AND AL,BH
DATA &HE6, &HA1 : 'OUT A1,AL
DATA &HE4, &H21 : 'IN AL,21
DATA &HA2, 1, 0 : 'MOV [0001],AL
DATA &H20, &HD8 : 'AND AL,BL
DATA &HE6, &H21 : 'OUT 21,AL
DATA &HFB : 'STI
DATA &H1F : 'POP DS
DATA &H59 : 'POP CX
DATA &H5B : 'POP BX
DATA &H58 : 'POP AX
DATA &HCB : 'RETF
SUB AdresSec
Sec1$(0) = Adres$
Sec$(1) = CHR$(4) + " $03F8 "
Sec$(2) = CHR$(4) + " $02F8 "
Sec$(3) = CHR$(5) + " $03E8 "
Sec$(4) = CHR$(6) + " $02E8 "
Sec$(5) = CHR$(6) + " $4220 "
Sec$(6) = CHR$(3) + " $4228 "
Sec$(7) = CHR$(3) + " $5220 "
Sec$(8) = CHR$(3) + " $5228 "
MenuYatay = 6
MenuDikey = 55
MenuGenis = 7
MenuYuksek = 9
MenuSecim$ = "32E8045"
CALL HareketliMenu
IF Tus$ <> "" THEN Adres$ = MID$(Sec$(Yatay - MenuYatay), 3, 5)
END SUB
SUB AlmaDizinineGec
COLOR 7, 1
CLS
S = 0
Q$ = ""
FOR I = LEN(Dizin$(2)) TO 1 STEP -1
A$ = MID$(Dizin$(2), I, 1)
IF A$ = "\" THEN
IF S = 0 THEN S = 1 ELSE EXIT FOR
ELSE
Q$ = Q$ + A$
END IF
NEXT
Q1$ = ""
FOR I = LEN(Q$) TO 1 STEP -1
A$ = MID$(Q$, I, 1)
Q1$ = Q1$ + A$
NEXT
CHDIR Q1$
END SUB
SUB AnsiyeBak
RESTORE AnsiYuklumu
REDIM A%(20)
DEF SEG = VARSEG(A%(0))
FOR I% = 0 TO 19
READ D%
POKE VARPTR(A%(0)) + I%, D%
NEXT I%
CALL absolute(VARPTR(A%(0)))
DEF SEG
DEF SEG = &HB900
IF PEEK(0) = 255 THEN Ekra$ = "ANSI"
END SUB
SUB ArkaPlanCiz
SCREEN , , 3, 0
COLOR 9, 7: CLS
A$ = " Programlama Sanatì.."
A = LEN(A$)
FOR I = 0 TO 1840 / A
B = 80 - C
IF B <= A THEN
PRINT LEFT$(A$, B);
PRINT RIGHT$(A$, A - B);
C = A - B: D = C
ELSE
PRINT A$;
C = C + A
END IF
NEXT
DEF SEG = EkranAdresi + 256 * 3
FOR I = 3680 + D * 2 TO 4000 STEP A * 2
FOR Y = 1 TO A
POKE I + (Y - 1) * 2, ASC(MID$(A$, Y, 1))
NEXT
NEXT
SCREEN , , 0
END SUB
SUB Artma
VeriAlYatay = VeriAlYatay + 1
IF VeriAlYatay = MenuYatay + MenuYuksek THEN VeriAlYatay = MenuYatay + 1
END SUB
SUB Artma2
VeriAlYatay = VeriAlYatay + 1
IF VeriAlYatay = MenuYatay + MenuYuksek THEN VeriAlYatay = MenuYatay + 2
END SUB
SUB BaudSec
Sec$(0) = "[ Hìz ]"
Sec1$(0) = Baud$
Sec$(1) = CHR$(4) + " 2400 Bps "
Sec$(2) = CHR$(4) + " 4800 Bps "
Sec$(3) = CHR$(5) + " 9600 Bps "
Sec$(4) = CHR$(3) + " 14400 Bps "
Sec$(5) = CHR$(4) + " 19200 Bps "
Sec$(6) = CHR$(3) + " 38400 Bps "
Sec$(7) = CHR$(4) + " 57600 Bps "
Sec$(8) = CHR$(4) + " 115200 Bps "
MenuYatay = 6
MenuDikey = 60
MenuGenis = 12
MenuYuksek = 9
MenuSecim$ = "24619375"
CALL HareketliMenu
IF Tus$ <> "" THEN Baud$ = MID$(Sec$(Yatay - MenuYatay), 3, 6)
END SUB
SUB CerceveCiz
COLOR Renk(1), Renk(2)
FOR I = 1 TO MenuYuksek - 1
LOCATE MenuYatay + I, MenuDikey: PRINT "║"; STRING$(MenuGenis, " "); "║"
NEXT
LOCATE MenuYatay, MenuDikey
PRINT "╔"; STRING$(MenuGenis, "═"); "╗"
LOCATE MenuYatay + MenuYuksek, MenuDikey
PRINT "╚"; STRING$(MenuGenis, "═"); "╝";
DEF SEG = EkranAdresi
FOR I = 1 TO MenuGenis + 1
POKE ((MenuYatay + MenuYuksek) * 160 + (MenuDikey + I) * 2 + 1), 9
NEXT
FOR I = 1 TO MenuYuksek + 1
TR = ((MenuYatay + I - 1) * 160 + (MenuDikey + MenuGenis + 1) * 2 + 1)
POKE TR, 9
POKE TR + 2, 9
NEXT
DEF SEG
LOCATE MenuYatay + MenuYuksek, MenuDikey + MenuGenis - LEN(Cer$) - 1
PRINT Cer$
COLOR Renk(3), Renk(4): LOCATE MenuYatay, MenuDikey + 3: PRINT Sec$(0)
END SUB
SUB ConfigAc
CLOSE #3
OPEN "R", #3, "MODEM.KUR", 420
FIELD #3, 170 AS Veri$, 250 AS Veri1$
IF LOF(3) <> 420 THEN
PUT #3, 1
CALL Ilkkurulma
END IF
END SUB
SUB ConfigOku
CALL ConfigAc
GET #3, 1
IF ASC(Veri$) <> 71 THEN
Veri$ = SPACE$(170)
Veri1$ = SPACE$(250)
END IF
Kim$ = MID$(Veri$, 2, 30)
Tel$ = MID$(Veri$, 32, 20)
IRQ$ = MID$(Veri$, 52, 4)
Baud$ = MID$(Veri$, 56, 6)
Adres$ = MID$(Veri$, 62, 5)
PortNo$ = MID$(Veri$, 67, 4)
Ekran$ = MID$(Veri$, 71, 4)
Katar$ = MID$(Veri$, 75, 50)
Kosul$ = MID$(Veri$, 125, 6)
Cevap$ = MID$(Veri$, 131, 6)
Echo$ = MID$(Veri$, 137, 6)
Ses$ = MID$(Veri$, 143, 6)
Tutanak$ = MID$(Veri$, 149, 6)
Sontel = VAL(MID$(Veri$, 155, 1))
IF Sontel = 0 THEN Sontel = 1
IF Veri$ <> SPACE$(170) THEN
FOR I = 1 TO 10
Renk(I) = ASC(MID$(Veri$, 159 + I, 1))
NEXT
ELSE
Katar$ = "ATZ" + SPACE$(47)
PortNo$ = "Com-"
Adres$ = "$----"
Baud$ = "2400"
IRQ$ = "IRQ7"
Ekran$ = Ekra$
Kosul$ = "Açìk "
Cevap$ = "Açìk "
Echo$ = "Kapalì"
Ses$ = "Açìk "
Tutanak$ = "Kapalì"
END IF
Y = 0
FOR I = 1 TO 250 STEP 50
Y = Y + 1
Dizin$(Y) = RTRIM$(MID$(Veri1$, I, 50))
NEXT
Port = VAL("&H" + RIGHT$(Adres$, 4))
IF Ses$ = "Kapalì" THEN Muzik$ = "P4" ELSE Muzik$ = "O2L8CD"
END SUB
SUB ConfigYaz
CALL ConfigAc
B$ = SPACE$(170)
MID$(B$, 1, 1) = "G"
MID$(B$, 2, 30) = Kim$
MID$(B$, 32, 20) = Tel$
MID$(B$, 52, 4) = IRQ$
MID$(B$, 56, 6) = Baud$
MID$(B$, 62, 5) = Adres$
MID$(B$, 67, 4) = PortNo$
MID$(B$, 71, 4) = Ekran$
MID$(B$, 75, 50) = Katar$
MID$(B$, 125, 6) = Kosul$
MID$(B$, 131, 6) = Cevap$
MID$(B$, 137, 6) = Echo$
MID$(B$, 143, 6) = Ses$
MID$(B$, 149, 6) = Tutanak$
MID$(B$, 155, 1) = LTRIM$(STR$(Sontel))
FOR I = 1 TO 10
MID$(B$, 159 + I, 1) = CHR$(Renk(I))
NEXT
LSET Veri$ = B$
C$ = SPACE$(250)
Y = 0
FOR I = 1 TO 250 STEP 50
Y = Y + 1
MID$(C$, I, 50) = Dizin$(Y)
NEXT
LSET Veri1$ = C$
PUT #3, 1
CALL ConfigOku
END SUB
SUB DizinAc
Diz:
FOR Z = 1 TO 5
Hata = 2
D$ = Dizin$(Z) + "$$.4E$"
CLOSE #4
OPEN "R", #4, D$, 1
IF Hata = 3 THEN
D$ = LEFT$(Dizin$(Z), LEN(Dizin$(Z)) - 1)
MKDIR D$
GOTO Diz
END IF
FIELD #4, 1 AS E$
CLOSE #4
KILL D$
NEXT
Hata = 0
END SUB
SUB Dizinler
CALL ConfigOku
IF Dizin$(1) = "" THEN
COLOR 1, 1
CLS
Hata = 1
FILES "$$.$EF"
Hata = 0
B$ = ""
FOR I = 1 TO 59
B$ = B$ + CHR$(SCREEN(1, I))
NEXT
Dizin$(1) = RTRIM$(B$)
IF RIGHT$(Dizin$(1), 1) <> "\" THEN Dizin$(1) = Dizin$(1) + "\"
END IF
IF Dizin$(2) = "" THEN Dizin$(2) = Dizin$(1) + "GELEN\"
IF Dizin$(3) = "" THEN Dizin$(3) = Dizin$(1) + "GIDEN\"
IF Dizin$(4) = "" THEN Dizin$(4) = Dizin$(1) + "PROTOKOL\"
IF Dizin$(5) = "" THEN Dizin$(5) = Dizin$(1) + "TUTANAK\"
PCOPY 3, 0
MenuYatay = 9
MenuDikey = 2
MenuGenis = 73
MenuYuksek = 6
Sec$(0) = "[ Dizinler ]"
CALL CerceveCiz
Sec1$(1) = "Ana Çalìƒma Dizini"
Sec1$(2) = "Gelenlerin Yeri"
Sec1$(3) = "Gideceklerin Yeri"
Sec1$(4) = "Protokol Programlarì"
Sec1$(5) = "Görüƒme Tutanaklarì"
FOR I = 5 TO 1 STEP -1
COLOR Renk(1), Renk(2)
Sec$(I) = SPACE$(50)
MID$(Sec$(I), 1, LEN(Dizin$(I))) = Dizin$(I)
LOCATE MenuYatay + I, MenuDikey + 2
PRINT Sec1$(I); " ";
COLOR Renk(9), Renk(10)
PRINT Sec$(I)
NEXT
VeriAlYatay = MenuYatay + 1
VeriTipi = 3
DO
V = VeriAlYatay - MenuYatay
VerialBoy = LEN(Sec$(V))
VerialDikey = MenuDikey + LEN(Sec1$(V)) + 3
Verial$ = Sec$(V)
CALL Verialma
LOCATE VeriAlYatay, VerialDikey
COLOR Renk(9), Renk(10)
PRINT Verial$
Sec$(V) = Verial$
SELECT CASE Z
CASE 80
CALL Artma
CASE 72
CALL Eksilme
CASE 27
EXIT DO
CASE 13
CALL Artma
END SELECT
LOOP
FOR I = 1 TO 5
Sec$(I) = RTRIM$(Sec$(I))
IF RIGHT$(Sec$(I), 1) <> "\" THEN Sec$(I) = Sec$(I) + "\"
Dizin$(I) = Sec$(I)
NEXT
CALL DizinAc
CALL ConfigYaz
END SUB
SUB DosyaAc
CLOSE #6
OPEN "R", #6, DosyaAd$, DosyaBoy
FIELD #6, DosyaBoy AS Veri$
END SUB
SUB DosyaAl
CALL ProtokolSec
IF Tus$ = "" THEN EXIT SUB
A$ = MID$(Sec1$(Yatay - MenuYatay), 17, 12)
B$ = MID$(Sec1$(Yatay - MenuYatay), 29, 30)
CALL AlmaDizinineGec
SHELL Dizin$(4) + A$ + B$
CHDIR ".."
END SUB
SUB DosyaGonder
CALL ProtokolSec
IF Tus$ = "" THEN EXIT SUB
A$ = MID$(Sec1$(Yatay - MenuYatay), 17, 12)
B$ = MID$(Sec1$(Yatay - MenuYatay), 59, 30) + " "
GelGid$ = Dizin$(4) + A$ + B$
LOCATE , , 0
CALL DosyaOgren
END SUB
SUB DosyaOgren
Q$ = Dizin$(3)
Dosya:
GOSUB Tara
PCOPY 3, 0
Sec$(0) = "[ Yardìm ]"
MenuYatay = 5
MenuDikey = 38
MenuGenis = 25
MenuYuksek = 5
Cer$ = ""
CALL CerceveCiz
Sec$(0) = ""
MenuYatay = 1
MenuDikey = 2
MenuGenis = LEN(Q$) + 14
MenuYuksek = 2
CALL CerceveCiz
COLOR Renk(1), Renk(2)
LOCATE 2, MenuDikey + 1
PRINT "Aktif Dizin = "; Q$
LOCATE 6, 39: PRINT "Esc...... Vazgeç"
LOCATE 7, 39: PRINT "Enter.... Dosya Gönder"
LOCATE 8, 39: PRINT "Del...... Dosya Sil"
LOCATE 9, 39: PRINT "Space.... Dosya ÿƒaretle"
Sec$(0) = "[ Dosya Gönderme ]"
MenuYatay = 5
MenuDikey = 9
MenuGenis = 23
H = 17
IF E < H THEN H = E
MenuYuksek = H + 1
CALL CerceveCiz
Cer$ = "Esc)Vazgeç"
GOSUB Ekranyaz
V = 1
DO
Konum:
V3 = V + V2
COLOR Renk(5), Renk(6)
GOSUB GenelYaz
DO: A$ = INKEY$: LOOP UNTIL A$ <> ""
COLOR Renk(1), Renk(2)
GOSUB GenelYaz
IF LEN(A$) = 2 THEN
Z = ASC(RIGHT$(A$, 1))
SELECT CASE Z
CASE 80
IF V < H THEN V = V + 1 ELSE IF V2 < E - H THEN V2 = V2 + 1: GOSUB Ekranyaz
CASE 72
IF V > 1 THEN V = V - 1 ELSE IF V2 > 0 THEN V2 = V2 - 1: GOSUB Ekranyaz
CASE 83
S = 0
FOR I = 1 TO E
IF MID$(Sec$(I), 1, 1) = "√" THEN V4 = I: GOSUB Sil
NEXT
IF S = 0 AND INSTR(Sec$(V3), "Dizin") = 0 THEN V4 = V3: GOSUB Sil
IF S = 1 GOTO Dosya
END SELECT
ELSE
Z = ASC(A$)
SELECT CASE Z
CASE 27
EXIT SUB
CASE 13
IF INSTR(Sec$(V3), "Dizin") = 0 THEN
S = 0
FOR I = 1 TO E
IF MID$(Sec$(I), 1, 1) = "√" THEN
V4 = I: GOSUB DosyaGonder
S = 1
END IF
NEXT
IF S = 0 THEN
V4 = V3: GOSUB DosyaGonder
END IF
EXIT SUB
ELSE
IF INSTR(Sec$(V3), "Önceki") = 0 THEN
Q$ = Q$ + RTRIM$(MID$(Sec$(V3), 2, 12)) + "\"
ELSE
S = 0
FOR I = LEN(Q$) TO 1 STEP -1
IF MID$(Q$, I, 1) = "\" THEN
IF S = 0 THEN S = 1 ELSE EXIT FOR
END IF
Q$ = LEFT$(Q$, I - 1)
NEXT
END IF
GOTO Dosya
END IF
CASE 32
IF INSTR(Sec$(V3), "Dizin") = 0 THEN
IF MID$(Sec$(V3), 1, 1) = "√" THEN MID$(Sec$(V3), 1, 1) = " " ELSE MID$(Sec$(V3), 1, 1) = "√"
GOSUB GenelYaz
END IF
IF V < H THEN V = V + 1 ELSE IF V2 < E - H THEN V2 = V2 + 1: GOSUB Ekranyaz
END SELECT
END IF
LOOP
Ekranyaz:
COLOR Renk(1), Renk(2)
FOR I = 1 TO H
LOCATE MenuYatay + I, MenuDikey + 1
PRINT LEFT$(Sec$(V2 + I) + SPACE$(23), 23)
NEXT
RETURN
GenelYaz:
LOCATE MenuYatay + V, MenuDikey + 1
PRINT Sec$(V3)
RETURN
Tara:
V2 = 0
LOCATE , , 0
D$ = "H GGG.D$D"
F$ = "DIR " + Q$ + "*.*/OG/B >" + D$
SHELL F$
DosyaAd$ = D$
DosyaBoy = 1
CALL DosyaAc
S = INSTR(Q$, "\")
S1 = INSTR(S + 1, Q$, "\")
E = 0
FOR I = 1 TO Kapasite
Sec$(I) = ""
NEXT
IF S1 > 0 THEN E = 1: Sec$(1) = " Önceki Dizin "
FOR I = 1 TO LOF(6)
GET #6, I
IF ASC(Veri$) = 13 THEN
E = E + 1
IF E > Kapasite THEN E = Kapasite: EXIT FOR
Sec$(E) = G$
Hata = 4
GOSUB Ogren
Sec$(E) = " " + LEFT$(Sec$(E) + SPACE$(23), 22)
IF Hata = 4 THEN H$ = STR$(LOF(5)): H = LEN(H$): MID$(Sec$(E), 23 - H, H) = H$
IF Hata = 5 THEN MID$(Sec$(E), 16, 7) = "<Dizin>"
IF INSTR(G$, D$) > 0 THEN E = E - 1
CLOSE #5
Hata = 0
G$ = ""
I = I + 1
ELSE
G$ = G$ + Veri$
END IF
NEXT
CLOSE #6
KILL D$
RETURN
Ogren:
CLOSE #5
OPEN "R", #5, Q$ + Sec$(E), 1
IF Hata = 4 THEN FIELD #5, 1 AS V$
RETURN
Sil:
Dos$ = RTRIM$(MID$(Sec$(V4), 2, 12))
Mesaj$ = "2" + Dos$ + " isimli dosyayì sileyim mi? E)vet H)ayìr"
CALL MesajYaz
IF INSTR("Ee", Tercih$) > 0 THEN
KILL Q$ + Dos$
S = 1
END IF
RETURN
DosyaGonder:
Dos$ = Q$ + RTRIM$(MID$(Sec$(V4), 2, 12))
S = 1
COLOR 7, 1
CLS
SHELL GelGid$ + Dos$
RETURN
END SUB
SUB EkranAc
CLOSE #2
Ek$ = "SCRN:"
IF Ekran$ = "ANSI" THEN Ek$ = "CON"
OPEN Ek$ FOR OUTPUT AS #2
END SUB
SUB EkranAdresiBul
EkranAdresi = &HB800
DEF SEG = 0
IF PEEK(&H449) = 7 THEN EkranAdresi = &HB000
END SUB
SUB EkranKoy
PCOPY 1, 0
LOCATE , , 1
IF Ek$ = "CON" THEN
PRINT #2, CHR$(27); "[u";
ELSE
LOCATE Satir, Sutun
END IF
END SUB
SUB EkranSakla
PCOPY 0, 1
IF Ek$ = "CON" THEN
PRINT #2, CHR$(27); "[s";
ELSE
Satir = CSRLIN
Sutun = POS(0)
END IF
LOCATE , , 0
END SUB
SUB EkranSec
Sec1$(0) = Ekran$
Sec$(1) = CHR$(2) + " TTY "
Sec$(2) = CHR$(2) + " ANSI "
MenuYatay = 9
MenuDikey = 55
MenuGenis = 6
MenuYuksek = 3
MenuSecim$ = "TA"
CALL HareketliMenu
IF Tus$ <> "" THEN Ekran$ = MID$(Sec$(Yatay - MenuYatay), 3, 4)
END SUB
SUB EkranUstuYaz
IF RR <> FIX(TIMER * 10) THEN
IF Ek$ = "CON" THEN
PRINT #2, CHR$(27); "[s";
GOSUB EkranUstuOrtak
PRINT #2, CHR$(27); "[u";
ELSE
Satir = CSRLIN
Sutun = POS(0)
GOSUB EkranUstuOrtak
LOCATE Satir, Sutun
END IF
END IF
EXIT SUB
EkranUstuOrtak:
COLOR Renk(9), Renk(10)
RR = FIX(TIMER * 10)
LOCATE , , 0
Yaz$ = " Alt+Z Yardìm │ Türkçe ÿletiƒim Programì │ " + PortNo$ + ": │ " + Ekran$ + " │ Saat=" + TIME$ + " "
MID$(Yaz$, 49, 6) = LTRIM$(Baud$)
LOCATE 1, 1
PRINT Yaz$;
LOCATE , , 1, 6, 7
COLOR Renk(2), Renk(1)
RETURN
END SUB
SUB Eksilme
VeriAlYatay = VeriAlYatay - 1
IF VeriAlYatay = MenuYatay THEN VeriAlYatay = MenuYatay + MenuYuksek - 1
END SUB
SUB Eksilme2
VeriAlYatay = VeriAlYatay - 1
IF VeriAlYatay = MenuYatay + 1 THEN VeriAlYatay = MenuYatay + MenuYuksek - 1
END SUB
SUB Elveda
Cer$ = ""
Sec$(0) = "[ Türkçe iletiƒim Programì Ver-1.0 Beta]"
PCOPY 3, 0
MenuYatay = 2
MenuDikey = 2
MenuGenis = 74
MenuYuksek = 8
CALL CerceveCiz
COLOR 7, 1
FOR I = 13 TO 25: LOCATE I, 1: PRINT SPACE$(80); : NEXT
COLOR Renk(1), Renk(2)
LOCATE 3, 3
PRINT "Yapìm : Gürol DEMÿR, Aºustos 1995, E-Mail:Gurold@doruk.com.tr"
LOCATE 5, 3
PRINT "Katkìda bulunanlar : Doruk BBS program-f üyelerinden; Nihat, Ziya, Ferhat,"
LOCATE 6, 24
PRINT "Suat, Hüseyin, Bora, Koray, Savaƒ, Buyar ve ÿsmail"
LOCATE 8, 3
PRINT "Özel teƒekkürler : Irq konusundaki yardìmlarì için sayìn Recep Tezkol'a"
LOCATE 9, 24
PRINT "Planlama için sevgili dostum M.Doºan Özdemir'e"
LOCATE 12, 1
END SUB
SUB HareketliMenu
LOCATE , , 0
CALL CerceveCiz
A = 1: Bul = 0
FOR I = 1 TO MenuYuksek - 1
IF INSTR(Sec$(I), Sec1$(0)) > 0 AND Bul = 0 THEN A = I: Bul = 1
Yata = MenuYatay + I: G = I
RenkA = Renk(1): RenkB = Renk(2)
GOSUB Yaz
NEXT
Yatay = MenuYatay + A
DO
G = Yatay - MenuYatay
Yata = Yatay: RenkA = Renk(5): RenkB = Renk(6): GOSUB Yaz
DO: Tus$ = INKEY$: LOOP UNTIL Tus$ <> ""
RenkA = Renk(1): RenkB = Renk(2): GOSUB Yaz
IF LEN(Tus$) = 2 THEN
Z = ASC(RIGHT$(Tus$, 1))
SELECT CASE Z
CASE 80
Yatay = Yatay + 1: IF Yatay = MenuYatay + MenuYuksek THEN Yatay = MenuYatay + 1
CASE 72
Yatay = Yatay - 1: IF Yatay = MenuYatay THEN Yatay = MenuYatay + MenuYuksek - 1
END SELECT
END IF
IF ASC(Tus$) = 27 THEN
Tus$ = ""
EXIT SUB
END IF
IF ASC(Tus$) = 13 THEN Yer = ASC(Sec$(G)) + 1: Tus$ = MID$(Sec$(G), Yer, 1)
V = INSTR(LEFT$(Al$(1), 34), Tus$)
IF V > 0 THEN Tus$ = MID$(Al$(0), V, 1)
V = INSTR(MenuSecim$, Tus$)
IF V > 0 THEN Yatay = MenuYatay + V: EXIT SUB
LOOP
Yaz:
LOCATE Yata, MenuDikey + 1
COLOR RenkA, RenkB
PRINT MID$(Sec$(G), 2, LEN(Sec$(G)) - 1)
Yer = ASC(Sec$(G)) + 1
LOCATE Yata, MenuDikey + 1 + Yer - 2
COLOR Renk(7)
PRINT MID$(Sec$(G), Yer, 1)
RETURN
END SUB
SUB IlkBaslama
CALL ProtokolOku
FOR V = 1 TO 5
A$ = RTRIM$(MID$(Sec1$(V), 89, 30))
Protokol$(V) = ""
FOR I = 1 TO LEN(A$) STEP 2
Protokol$(V) = Protokol$(V) + CHR$(VAL("&H" + MID$(A$, I, 2)))
NEXT
Protokol$(V) = RTRIM$(Protokol$(V))
IF Protokol$(V) = "" THEN Protokol$(V) = "√≈G&D Amatör Programcìlìk Hastasì√≈"
NEXT
CALL MakroTusOku
Ekra$ = "TTY "
'VeriTipi Açìklamasì
'1=Alfabetik
'2=Rakamsal
'3=Karìƒìk
Al$(0) = "QWERTYUIOPªÜASDFGHJKL₧ÿZXCVBNMÖÇqwertyuìopºüasdfghjklƒizxcvbnmöç"
Al$(1) = "qwertyuìopºüasdfghjklƒizxcvbnmöçQWERTYUIOPªÜASDFGHJKL₧ÿZXCVBNMÖÇ -/.!'^+%&/()=?_;*\,:"
Al$(2) = "1234567890-/. "
Al$(3) = Al$(1) + Al$(2) + "═"
Al$(4) = "0123456789ACBDEFabcdef"
Renk(1) = 1: 'Normal yazì
Renk(2) = 7
Renk(3) = 14: 'Menü adì
Renk(4) = 3
Renk(5) = 7: 'Aktif Satìr
Renk(6) = 1
Renk(7) = 15: 'Menü seçim rengi
Renk(8) = 4
Renk(9) = 4: 'Veri Rengi
Renk(10) = 7
CALL AnsiyeBak
CALL EkranAdresiBul
CALL ArkaPlanCiz
Cer$ = "Esc)Tamam"
CALL ConfigOku
CALL Terminal
END SUB
SUB Ilkkurulma
CALL ConfigOku
CALL Kullanan
CALL Dizinler
CALL ModemBul
CALL Modemsetup
CALL ConfigYaz
END SUB
SUB IrqSec
Sec1$(0) = IRQ$
Sec$(1) = CHR$(5) + " IRQ3 "
Sec$(2) = CHR$(5) + " IRQ4 "
Sec$(3) = CHR$(5) + " IRQ5 "
Sec$(4) = CHR$(5) + " IRQ7 "
MenuYatay = 8
MenuDikey = 55
MenuGenis = 6
MenuYuksek = 5
MenuSecim$ = "3457"
CALL HareketliMenu
IF Tus$ <> "" THEN IRQ$ = MID$(Sec$(Yatay - MenuYatay), 3, 4)
END SUB
SUB Kullanan
PCOPY 3, 0
MenuYatay = 10
MenuDikey = 15
MenuGenis = 49
MenuYuksek = 3
Sec$(0) = "[ Yeni Kurulum ]"
CALL CerceveCiz
CALL ConfigOku
Sec1$(1) = "Adìnìz Soyadìnìz"
Sec1$(2) = "Telefon Numaranìz"
Sec$(1) = Kim$
Sec$(2) = Tel$
FOR I = 1 TO 2
COLOR Renk(1), Renk(2)
LOCATE MenuYatay + I, MenuDikey + 2
PRINT Sec1$(I); " ";
COLOR Renk(9), Renk(10)
PRINT Sec$(I)
NEXT
VeriAlYatay = MenuYatay + 1
DO
V = VeriAlYatay - MenuYatay
VeriTipi = V
VerialBoy = LEN(Sec$(V))
VerialDikey = MenuDikey + LEN(Sec1$(V)) + 3
Verial$ = Sec$(V)
CALL Verialma
LOCATE VeriAlYatay, VerialDikey
COLOR Renk(9), Renk(10)
PRINT Verial$
Sec$(V) = Verial$
SELECT CASE Z
CASE 80
CALL Artma
CASE 72
CALL Eksilme
CASE 27
EXIT DO
CASE 13
CALL Artma
END SELECT
LOOP
Kim$ = Sec$(1)
Tel$ = Sec$(2)
CALL ConfigYaz
END SUB
SUB Kurulumlar
PCOPY 3, 0
Sec$(0) = "[ Ayarlar ]"
Sec$(1) = CHR$(2) + " Dÿzin Deºiƒtirme "
Sec$(2) = CHR$(2) + " Terminal Bilgileri Giriƒi "
Sec$(3) = CHR$(2) + " Renk Ayarlarì "
Sec$(4) = CHR$(2) + " Protokol Bilgileri Giriƒi "
Sec$(5) = CHR$(2) + " Makro Tuƒ Tanìmlarì "
MenuYatay = 9
MenuDikey = 20
MenuGenis = 34
MenuYuksek = 6
MenuSecim$ = "DTRPM"
CALL HareketliMenu
SELECT CASE Tus$
CASE "D"
CALL Dizinler
CALL Kurulumlar
CASE "T"
IF Gid$(9) <> "1" THEN CALL ModemKapa
CALL Modemsetup
CALL ConfigYaz
Gid$(9) = "1"
CALL Kurulumlar
CASE "R"
CALL RenkAyar
CALL Kurulumlar
CASE "M"
CALL MakroTus
CALL Kurulumlar
CASE "P"
CALL ProtokolDefteri
CALL Kurulumlar
END SELECT
CALL ConfigYaz
END SUB
SUB MakroTus
PCOPY 3, 0
Sec$(0) = "[ Makro Tuƒ Takìmlarì ]"
MenuYatay = 5
MenuDikey = 11
MenuGenis = 59
MenuYuksek = 15
Cer$ = "PgDn/PgUp)Diºer Sayfa═══Esc)Tamam"
CALL CerceveCiz
Cer$ = "Esc)Tamam"
LOCATE MenuYatay + 1, MenuDikey + 2
COLOR Renk(7), Renk(8)
PRINT "Tuƒlar"
LOCATE MenuYatay + 1, MenuDikey + 9
PRINT "Bu Tuƒlara Atanan Kelime Grubu "
VeriAlYatay = MenuYatay + 2
VerialDikey = MenuDikey + 9
VerialBoy = 50
VeriTipi = 3
CALL MakroTusOku
V1 = 1
GOSUB YazEkrr
DO
COLOR Renk(9), Renk(10)
LOCATE MenuYatay, MenuDikey + MenuGenis - 5
V = V1 * 13 - 14 + VeriAlYatay - MenuYatay
PRINT LEFT$(Makro$(V), 1)
Verial$ = RIGHT$(Makro$(V), 50)
CALL Verialma
LOCATE VeriAlYatay, VerialDikey
COLOR Renk(9), Renk(10)
PRINT Verial$
MID$(Makro$(V), 2, 50) = Verial$
SELECT CASE Z
CASE 80
CALL Artma2
CASE 81
IF V1 < 2 THEN V1 = V1 + 1
GOSUB YazEkrr
CASE 73
IF V1 > 1 THEN V1 = V1 - 1
GOSUB YazEkrr
CASE 72
CALL Eksilme2
CASE 27
GOSUB Yazdosyy
EXIT DO
CASE 13
CALL Artma2
END SELECT
LOOP
EXIT SUB
YazEkrr:
COLOR Renk(9), Renk(10)
V2 = V1 * 13 - 12
FOR I = 1 TO 13
T = V2 + I - 1
LOCATE MenuYatay + I + 1, MenuDikey + 2
PRINT "Ctrl+"; LEFT$(Makro$(T), 1); " "; RIGHT$(Makro$(T), 50)
NEXT
RETURN
Yazdosyy:
CLOSE #6
KILL DosyaAd$
CALL DosyaAc
FOR I = 1 TO 26
LSET Veri$ = Makro$(I)
PUT #6, I
NEXT
RETURN
END SUB
SUB MakroTusOku
DosyaAd$ = "MODEM.MKR"
DosyaBoy = 51
CALL DosyaAc
M$ = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
FOR I = 1 TO 26
GET #6, I
Makro$(I) = MID$(M$, I, 1) + SPACE$(50)
IF MID$(Veri$, 1, 1) = MID$(M$, I, 1) THEN Makro$(I) = Veri$
NEXT
END SUB
SUB MesajYaz
PCOPY 0, 2
LOCATE , , 0
M1 = 13
M3 = LEN(Mesaj$) + 1
M2 = FIX((80 - M3) / 2)
M4 = 2
COLOR Renk(1), Renk(2)
FOR I = 1 TO M4 - 1
LOCATE M1 + I, M2
PRINT "║"; STRING$(M3, " "); "║"
NEXT
LOCATE M1, M2
PRINT "╔"; STRING$(M3, "═"); "╗"
LOCATE M1 + M4, M2
PRINT "╚"; STRING$(M3, "═"); "╝";
DEF SEG = EkranAdresi
FOR I = 1 TO M3 + 1
A = ((M1 + M4) * 160 - 1 + (M2 + I) * 2 + 1)
POKE A + 1, 9
NEXT
FOR I = 1 TO M4 + 1
TR = ((M1 + I - 1) * 160 + (M2 + M3 + 1) * 2 + 1)
POKE TR, 9: POKE TR + 2, 9
NEXT
DEF SEG
DO
LOCATE 14, M2 + 2: PRINT RIGHT$(Mesaj$, M3 - 2)
PLAY Muzik$ + "P64"
IF ASC(Mesaj$) < 34 THEN EXIT DO
DO: Tercih$ = INKEY$: LOOP UNTIL Tercih$ <> ""
IF ASC(Mesaj$) = 49 THEN EXIT DO
SELECT CASE Tercih$
CASE "E", "e"
EXIT DO
CASE "H", "h", CHR$(27)
EXIT DO
END SELECT
LOOP
IF ASC(Mesaj$) <> 33 THEN PCOPY 2, 0
END SUB
SUB MesajYazTerminal
CALL EkranSakla
CALL MesajYaz
CALL EkranKoy
END SUB
SUB ModemAc
Ekran = 0
IF Tutanak$ = "Açìk " THEN
Isim = 0
YeniTutanak:
Isim = Isim + 1
DosyaAdi$ = Dizin$(5) + "MODEM" + LTRIM$(STR$(Isim)) + ".CAP"
DosyaBoyu = 1
CALL TutanakAc
IF LOF(7) <> 0 THEN GOTO YeniTutanak
END IF
DEF SEG = 0
FOR I = 40 TO 63: 'ÿnterrupt adresleri
Sakla(I - 40) = PEEK(I)
NEXT
Sakla(24) = INP(&H21) 'PIC deºerleri
Sakla(25) = INP(&HA1)
Sakla(26) = PEEK(1026) 'Com2 adresi
Sakla(27) = PEEK(1027)
Sakla = INP(Port + 3)
OUT Port + 3, 128
Sakla(28) = INP(Port)
OUT Port + 3, Sakla
POKE 1027, FIX(Port / 256)
POKE 1026, Port - PEEK(1027) * 256
CLOSE #1
OPEN "Com2:2400,N,8,1" FOR RANDOM AS #1
OUT &H21, Sakla(24) 'PIC deºerleri
OUT &HA1, Sakla(25)
Sakla = INP(Port + 3)
OUT Port + 3, 128
OUT Port, 115200 / VAL(Baud$)
OUT Port + 3, Sakla
IRQ = VAL(MID$(IRQ$, 4, 1))
IntAdres = (IRQ + 8) * 4
POKE IntAdres, PEEK(44)
POKE IntAdres + 1, PEEK(45)
POKE IntAdres + 2, PEEK(46)
POKE IntAdres + 3, PEEK(47)
RESTORE IRQSerbest
REDIM Oku(44)
DEF SEG = VARSEG(Oku(0))
FOR PicMask = 0 TO 44
READ D%
IF PicMask = 13 THEN D% = IRQ
POKE VARPTR(Oku(0)) + PicMask, D%
NEXT PicMask
CALL absolute(VARPTR(Oku(0)))
END SUB
SUB ModemBul
LOCATE , , 0
PCOPY 3, 0
Baud$ = "0"
Sec$(0) = " Modem Arama "
Cer$ = ""
MenuYatay = 3
MenuDikey = 5
MenuGenis = 68
MenuYuksek = 10
CALL CerceveCiz
Cer$ = "Esc)Tamam"
COLOR Renk(9), Renk(2)
LOCATE MenuYatay + 1, MenuDikey + 1
PRINT "C.No Adresi IRQ No Yapìlan iƒlem ve sonuç Fabrika Hìzì Önerilen Hìz"
DEF SEG = 0
FOR I = 40 TO 63
Sakla(I - 40) = PEEK(I)
NEXT
Sakla(25) = INP(&H21)
Sakla(26) = INP(&HA1)
FOR Y = 2 TO 7
IF Y <> 6 THEN
DEF SEG = &HB900
RESTORE YeniKesme
B = (Y - 2) * 20 + 11
FOR I = B TO B + 17
READ A
POKE I, A
NEXT
POKE B + 9, Y
DEF SEG = 0
C = 32 + Y * 4
POKE C, B
POKE C + 1, 0
POKE C + 2, 0
POKE C + 3, &HB9
END IF
NEXT
FOR Y1 = 2 TO 7
IF Y1 <> 6 THEN
RESTORE IRQSerbest
REDIM Oku(44)
DEF SEG = VARSEG(Oku(0))
FOR PicMask = 0 TO 44
READ D%
IF PicMask = 13 THEN D% = Y1
POKE VARPTR(Oku(0)) + PicMask, D%
NEXT PicMask
CALL absolute(VARPTR(Oku(0)))
END IF
NEXT
COLOR Renk(1), Renk(2)
Bekle = 5
A$ = "103F8202F8303E8402E854220642287522085228"
FOR I = 1 TO 40 STEP 5
Port$ = MID$(A$, I, 5)
LOCATE MenuYatay + I / 5 + 2, MenuDikey + 1
PRINT "Com"; LEFT$(Port$, 1); " "; RIGHT$(Port$, 4); " ??"
NEXT
Ekran$ = Ekra$
FOR I = 1 TO 40 STEP 5
DEF SEG = &HB900
FOR Y = 2 TO 9
POKE Y, 0
NEXT
Port$ = MID$(A$, I + 1, 4)
Port = VAL("&H" + Port$)
LOCATE MenuYatay + VAL(MID$(A$, I, 1)) + 1, MenuDikey + 20
PRINT "Bakìyorum"
LOCATE MenuYatay + VAL(MID$(A$, I, 1)) + 1, MenuDikey + 20
IF INP(Port + 1) <> 255 THEN
A = INP(Port + 3)
OUT Port + 3, 128
OUT Port, 115200 / 14400
OUT Port + 3, A
OUT Port + 1, 3
OUT Port + 4, 11
FOR S = 1 TO 2
B$ = "ATZ" + CHR$(13)
GOSUB Yolla
NEXT
DEF SEG = &HB900
FOR Y = 2 TO 9
IF PEEK(Y) <> 0 THEN
LOCATE MenuYatay + VAL(MID$(A$, I, 1)) + 1, MenuDikey + 13
PRINT "Irq="; Y
Y1 = Y
LOCATE MenuYatay + VAL(MID$(A$, I, 1)) + 1, MenuDikey + 20
END IF
NEXT
GOSUB Gelen
IF INSTR(B$, "OK") = 0 THEN
PRINT "Baƒka bir aygìt var !"
ELSE
IRQ$ = "IRQ" + LTRIM$(STR$(Y1))
PortNo$ = "Com" + MID$(A$, I, 1)
Adres$ = "$" + Port$
PRINT "*Bir modem bulundu...* ";
B$ = "ATI" + CHR$(13)
GOSUB Yolla
GOSUB Gelen
IF INSTR(B$, "14400") > 1 THEN Baud$ = "14400 Bps"
IF INSTR(B$, "2400") > 1 THEN Baud$ = "2400 Bps"
IF INSTR(B$, "28000") > 1 THEN Baud$ = "28800 Bps"
IF INSTR(B$, "ERROR") > 1 THEN Baud$ = "Öºrenilemedi!"
PRINT Baud$; SPACE$(14 - LEN(Baud$));
Baud$ = LTRIM$(STR$(VAL(Baud$) * 4))
IF VAL(Baud$) = 0 THEN Baud$ = "14400"
PRINT Baud$; " Bps"
END IF
OUT Port + 1, 0
OUT Port + 4, 0
ELSE
PRINT "Hiç aygìt yok !!!"
END IF
NEXT
DEF SEG = 0
FOR I = 40 TO 63
POKE I, Sakla(I - 40)
NEXT
OUT &H21, Sakla(25)
OUT &HA1, Sakla(26)
LOCATE MenuYatay + 10, MenuDikey + 45
PRINT "Bir tuƒa basìnìz"
DO: LOOP UNTIL INKEY$ <> ""
EXIT SUB
Yolla:
FOR J = 1 TO LEN(B$)
A = ASC(MID$(B$, J, 1))
DO
IF (INP(Port + 5) AND 32) = 32 THEN
OUT Port, A
EXIT DO
END IF
LOOP
NEXT
RETURN
Gelen:
B = FIX(TIMER)
B$ = ""
DO
IF (INP(Port + 5) AND 1) = 1 THEN
B$ = B$ + CHR$(INP(Port))
END IF
IF FIX(TIMER) - B >= Bekle THEN EXIT DO
IF INSTR(B$, "OK") > 0 THEN EXIT DO
LOOP
RETURN
END SUB
SUB ModemHangUp
A$ = CHR$(13)
Gid$(0) = CHR$(27) + A$ + "~~~+++~~~" + A$ + "ATH" + A$ + "ATZ" + A$
CALL TerminalGidenler
END SUB
SUB ModemKapa
Ekran = 1
CALL ModemHangUp
OUT Port + 4, (INP(Port + 4) AND 252)
CLOSE #1
Sakla = INP(Port + 3)
OUT Port + 3, 128
OUT Port, Sakla(28)
OUT Port + 3, Sakla
DEF SEG = 0
FOR I = 40 TO 63: 'ÿnterrupt adresleri
POKE I, Sakla(I - 40)
NEXT
OUT &H21, Sakla(24) 'PIC deºerleri
OUT &HA1, Sakla(25)
POKE 1026, Sakla(26) 'Com2 adresi
POKE 1027, Sakla(27)
END SUB
SUB Modemsetup
Yty = 6
Setup:
PCOPY 3, 0
Sec$(0) = ""
MenuYatay = 21
MenuDikey = 51
MenuGenis = 22
MenuYuksek = 2
Cer$ = ""
CALL CerceveCiz
Cer$ = "Esc)Tamam"
COLOR Renk(1), Renk(2)
LOCATE 22, 53
PRINT "F6) Otomatik Kurulum"
Sec$(0) = "[ Modem Ayarlarì ]"
Sec$(1) = CHR$(21) + " Modemin Kullandìºì IRQ: " + IRQ$
Sec$(2) = CHR$(2) + " ÿletiƒim Hìzì:" + Baud$
Sec$(3) = CHR$(2) + " Modem Adresi: " + Adres$
Sec$(4) = CHR$(2) + " Port No:" + PortNo$
Sec$(5) = CHR$(2) + " Ekran Emülasyonu: " + Ekran$
Sec$(6) = CHR$(2) + " Katar: " + Katar$
Sec$(7) = CHR$(2) + " Açìlìƒ Koƒullamasì: " + Kosul$
Sec$(8) = CHR$(11) + " Otomatik Cevaplama: " + Cevap$
Sec$(9) = CHR$(2) + " Local Echo: " + Echo$
Sec$(10) = CHR$(2) + " Ses: " + Ses$
Sec$(11) = CHR$(2) + " Görüƒme Tutanaklarì: " + Tutanak$
MenuYatay = 5
MenuDikey = 8
MenuGenis = 59
MenuYuksek = 12
MenuSecim$ = "IÿMPEKACLSG" + CHR$(242)
Sec1$(0) = Sec$(Yty - MenuYatay)
CALL HareketliMenu
Cer$ = ""
Sec$(0) = ""
Yty = Yatay
IF Yty < 18 THEN Yty = Yty + 1 ELSE Yty = 6
SELECT CASE Tus$
CASE "I"
CALL IrqSec
GOTO Setup
CASE "ÿ"
CALL BaudSec
GOTO Setup
CASE "M"
CALL AdresSec
GOTO Setup
CASE "P"
CALL PortSec
GOTO Setup
CASE "E"
CALL EkranSec
GOTO Setup
CASE "A"
Sec1$(0) = Kosul$
CALL Secim
IF Tus$ <> "" THEN Kosul$ = MID$(Sec$(Yatay - MenuYatay), 3, 6)
GOTO Setup
CASE "C"
Sec1$(0) = Cevap$
CALL Secim
IF Tus$ <> "" THEN Cevap$ = MID$(Sec$(Yatay - MenuYatay), 3, 6)
GOTO Setup
CASE "L"
Sec1$(0) = Echo$
CALL Secim
IF Tus$ <> "" THEN Echo$ = MID$(Sec$(Yatay - MenuYatay), 3, 6)
GOTO Setup
CASE "S"
Sec1$(0) = Ses$
CALL Secim
IF Tus$ <> "" THEN Ses$ = MID$(Sec$(Yatay - MenuYatay), 3, 6)
GOTO Setup
CASE "G"
Sec1$(0) = Tutanak$
CALL Secim
IF Tus$ <> "" THEN Tutanak$ = MID$(Sec$(Yatay - MenuYatay), 3, 6)
GOTO Setup
CASE "K"
VerialDikey = 17
VeriAlYatay = 11
VerialBoy = 50
Verial$ = Katar$
VeriTipi = 3
CALL Verialma
Katar$ = Verial$
GOTO Setup
CASE CHR$(242)
CALL ModemBul
Yty = 8
GOTO Setup
CASE ELSE
Cer$ = "Esc)Tamam"
EXIT SUB
END SELECT
END SUB
SUB OtomatikSec
Sec$(0) = "[ Otomatik ÿƒlemler]"
Sec1$(0) = Oto$
Sec$(1) = CHR$(2) + " Otomatik iƒlem iptal "
Sec$(2) = CHR$(2) + " ÿsim + ₧ifre "
Sec$(3) = CHR$(3) + " ÿsim + E + ₧ifre "
Sec$(4) = CHR$(5) + " ÿsim + Y + ₧ifre "
Sec$(5) = CHR$(21) + " Esc + Esc + ÿsim + Y + ₧ifre "
Sec$(6) = CHR$(21) + " Esc + Esc + ÿsim + E + ₧ifre "
MenuYatay = 12
MenuDikey = 30
MenuGenis = 30
MenuYuksek = 7
MenuSecim$ = "OÿSMYE"
CALL HareketliMenu
IF Tus$ <> "" THEN Oto$ = MID$(Sec$(Yatay - MenuYatay), 2, 40)
END SUB
SUB Pencere
CALL EkranSakla
PCOPY 3, 0
Sec$(0) = "[ Yardìm ]"
MenuYatay = 8
MenuDikey = 8
MenuGenis = 64
MenuYuksek = 8
CALL CerceveCiz
COLOR Renk(7), Renk(2)
A$ = CHR$(16)
LOCATE 9, 9: PRINT "Alt-A Ayarlamalar"
LOCATE 9, 45: PRINT "Alt-C Ekranì Sil"
LOCATE 10, 45: PRINT "Alt-Z Yardìm"
LOCATE 11, 45: PRINT "Alt-B Chat Modu"
LOCATE 15, 9: PRINT "Alt-T Telefon Defteri"
LOCATE 12, 9: PRINT "Alt-E Echo Aç/Kapa "; A$; Echo$
LOCATE 10, 9: PRINT "Alt-K Baºlantìnìn Kesilmesi"
LOCATE 11, 9: PRINT "Alt-D Dos Shell"
LOCATE 13, 9: PRINT "Alt-S Ses Aç/Kapa "; A$; Ses$
LOCATE 14, 9: PRINT "Alt-O Otomatik Cevap Verme "; A$; Cevap$
LOCATE 12, 45: PRINT "Alt-X Çìkìƒ"
LOCATE 14, 45: PRINT "<PgUp> Dosya Gönderme"
LOCATE 15, 45: PRINT "<PgDn> Dosya Alma"
DO: A$ = INKEY$: LOOP UNTIL A$ <> ""
IF LEN(A$) = 2 THEN Z = ASC(RIGHT$(A$, 1))
CALL EkranKoy
END SUB
SUB PortSec
Sec$(0) = ""
Sec1$(0) = PortNo$
FOR I = 1 TO 8
Sec$(I) = CHR$(5) + " Com" + LTRIM$(STR$(I)) + " "
NEXT
MenuYatay = 6
MenuDikey = 55
MenuGenis = 6
MenuYuksek = 9
MenuSecim$ = "12345678"
CALL HareketliMenu
PortNo$ = MID$(Sec$(Yatay - MenuYatay), 3, 4)
END SUB
SUB ProtokolDefteri
Protol:
CALL ProtokolSec
IF Tus$ = "" THEN EXIT SUB
PCOPY 3, 0
Yatay = Yatay - MenuYatay
Sec$(1) = "Protokol ÿsmi"
Sec$(2) = "Program Adì"
Sec$(3) = "Alma Parametreleri"
Sec$(4) = "Gönderme Parametreleri"
Sec$(5) = "ÿƒareti(Hex$)"
Sec$(0) = "[ Protokol ]"
Eski$ = Sec1$(Yatay)
Sec1$(1) = MID$(Eski$, 1, 16)
Sec1$(2) = MID$(Eski$, 17, 12)
Sec1$(3) = MID$(Eski$, 29, 30)
Sec1$(4) = MID$(Eski$, 59, 30)
Sec1$(5) = MID$(Eski$, 89, 30)
MenuYatay = 8
MenuDikey = 7
MenuGenis = 62
MenuYuksek = 6
CALL CerceveCiz
VeriAlYatay = MenuYatay + 1
FOR I = 1 TO 5
COLOR Renk(9), Renk(10)
LOCATE MenuYatay + I, MenuDikey + 2
PRINT Sec$(I)
COLOR Renk(1), Renk(2)
LOCATE MenuYatay + I, MenuDikey + LEN(Sec$(I)) + 3
PRINT Sec1$(I)
IF I = 5 THEN V = I: GOSUB HexiYaz
NEXT
LOCATE MenuYatay, MenuDikey + MenuGenis - 5
PRINT Yatay
VeriAlYatay = MenuYatay + 1
DO
V = VeriAlYatay - MenuYatay
IF V = 5 THEN
VeriTipi = 4
GOSUB HexiYaz
ELSE
VeriTipi = 3
END IF
VerialDikey = MenuDikey + LEN(Sec$(V)) + 3
VerialBoy = LEN(Sec1$(V))
Verial$ = Sec1$(V)
CALL Verialma
COLOR Renk(1), Renk(2)
LOCATE MenuYatay + V, MenuDikey + LEN(Sec$(V)) + 3
PRINT Verial$
Sec1$(V) = Verial$
IF V = 5 THEN GOSUB HexiYaz
SELECT CASE Z
CASE 80
CALL Artma
CASE 72
CALL Eksilme
CASE 27
EXIT DO
CASE 13
CALL Artma
END SELECT
LOOP
Eski$ = SPACE$(118)
MID$(Eski$, 1, 16) = Sec1$(1)
MID$(Eski$, 17, 12) = Sec1$(2)
MID$(Eski$, 29, 30) = Sec1$(3)
MID$(Eski$, 59, 30) = Sec1$(4)
MID$(Eski$, 89, 30) = Sec1$(5)
LSET Veri$ = "G" + Eski$
PUT #6, Yatay
GOTO Protol
HexiYaz:
LOCATE 13, 54
FOR I = 1 TO 30 STEP 2
A = VAL("&H" + MID$(Sec1$(V), I, 2))
IF A = 13 THEN A = 251
IF A = 10 THEN A = 248
IF A = 12 THEN A = 254
IF A = 11 THEN A = 244
PRINT CHR$(A);
NEXT
RETURN
END SUB
SUB ProtokolOku
DosyaAd$ = "MODEM.PRT"
DosyaBoy = 119
CALL DosyaAc
FOR I = 1 TO 5
GET #6, I
Sec1$(I) = SPACE$(119)
IF MID$(Veri$, 1, 1) = "G" THEN Sec1$(I) = RIGHT$(Veri$, 118)
NEXT
END SUB
SUB ProtokolSec
CALL ProtokolOku
PCOPY 3, 0
COLOR Renk(1), Renk(2)
FOR I = 1 TO 5
Sec$(I) = CHR$(12) + " External (" + LTRIM$(STR$(I)) + ") " + LEFT$(Sec1$(I), 16)
NEXT
Sec1$(0) = Protokol$
Sec$(0) = "[ Protokol ]"
MenuYatay = 9
MenuDikey = 5
MenuGenis = 30
MenuYuksek = 6
MenuSecim$ = "12345"
CALL HareketliMenu
END SUB
SUB RenkAyar
DO
PCOPY 3, 0
Sec$(0) = "[ Renk Ayarì ]"
Sec$(1) = CHR$(2) + " Normal Satìr Renkleri "
Sec$(2) = CHR$(2) + " Menü Adlarì "
Sec$(3) = CHR$(2) + " Aktif Satìr Renkleri "
Sec$(4) = CHR$(2) + " Seçim Karakteri Rengi "
Sec$(5) = CHR$(2) + " Veri Giriƒi Renkleri "
MenuSecim$ = "NMASV"
MenuYatay = 3
MenuDikey = 3
MenuGenis = 23
MenuYuksek = 6
CALL HareketliMenu
IF Tus$ = "" THEN EXIT DO
Yt = (Yatay - MenuYatay) * 2
Y = Renk(Yt)
X = Renk(Yt - 1)
Sec1$(0) = Sec$(Yt / 2)
Sec$(0) = "[ Renkler ]"
MenuYatay = 8
MenuDikey = 31
MenuGenis = 16
MenuYuksek = 9
CALL CerceveCiz
FOR J = 0 TO 7
FOR I = 0 TO 15
LOCATE MenuYatay + J + 1, MenuDikey + I + 1
COLOR I, J: PRINT "X"
NEXT
NEXT
DO
LOCATE MenuYatay + Y + 1, MenuDikey + X + 1: COLOR 31, 1: PRINT "X"
DO: W$ = INKEY$: LOOP UNTIL W$ <> ""
LOCATE MenuYatay + Y + 1, MenuDikey + X + 1: COLOR X, Y: PRINT "X"
Z = ASC(RIGHT$(W$, 1))
IF Z = 27 OR Z = 13 THEN EXIT DO
Degis = 1
IF Z = 77 THEN X = X + 1: IF X = 16 THEN X = 0
IF Z = 75 THEN X = X - 1: IF X = -1 THEN X = 15
IF Z = 80 THEN Y = Y + 1: IF Y = 8 THEN Y = 0
IF Z = 72 THEN Y = Y - 1: IF Y = -1 THEN Y = 7
Renk(Yt) = Y
Renk(Yt - 1) = X
LOOP
LOOP
CALL ConfigYaz
END SUB
SUB Secim
Sec$(1) = CHR$(2) + " Açìk "
Sec$(2) = CHR$(2) + " Kapalì "
MenuYatay = 9
MenuDikey = 55
MenuGenis = 8
MenuYuksek = 3
MenuSecim$ = "AK"
CALL HareketliMenu
END SUB
SUB TelefonDefteri
Makro = 0
Oto = 0
Tel:
LOCATE , , 0
PCOPY 3, 0
Sec$(0) = "[ Telefon Defteri ]"
MenuYatay = 2
MenuDikey = 9
MenuGenis = 60
GOSUB DosyaOku
MenuYuksek = I1 + 1
Cer$ = "G)iriƒ══S)il══Enter)Telefonu Çevir══Esc)Çìk"
CALL CerceveCiz
Cer$ = "Esc)Tamam"
COLOR Renk(1), Renk(2)
FOR I = 1 TO I1
V = I
VeriAlYatay = MenuYatay + I
GOSUB EkYaz
NEXT
VeriAlYatay = MenuYatay + Sontel
DO
V = VeriAlYatay - MenuYatay
COLOR Renk(5), Renk(6)
GOSUB EkYaz
COLOR Renk(1), Renk(2)
LOCATE MenuYatay, MenuDikey + MenuGenis - 5
PRINT V; "═"
DO: A$ = INKEY$: LOOP UNTIL A$ <> ""
GOSUB EkYaz
IF LEN(A$) = 2 THEN
Z = ASC(RIGHT$(A$, 1))
SELECT CASE Z
CASE 80
CALL Artma
CASE 72
CALL Eksilme
END SELECT
ELSE
Z = ASC(A$)
SELECT CASE Z
CASE 27
GOSUB SonYaz
EXIT SUB
CASE 71, 103
GOSUB Ekle
GOTO Tel
CASE 13
T$ = MID$(Sec$(V), 31, 20)
IF T$ <> SPACE$(20) THEN
Sontel = V
CALL ConfigYaz
Eski$ = Sec$(V)
GOSUB Durum
Sec$(0) = "[ Telefon Mesajlarì ]"
MenuYatay = 9
MenuDikey = 19
MenuGenis = 40
MenuYuksek = 4
CALL CerceveCiz
COLOR Renk(1), Renk(2)
LOCATE 11, 21
PRINT "Yapìlan iƒlem: Modem ÿnstall.."
CALL ModemKapa
PLAY "P2P2"
A = 0
CALL ModemAc
Ekran = 4
LOCATE 11, 21
PRINT "Önceki Mesaj : Herƒey normal.."
LOCATE 12, 21
PRINT "Aranan Numara: "; T$
DO
A = A + 1
IF A = 10 THEN EXIT DO
IF A$ <> "" THEN IF ASC(A$) = 27 THEN EXIT DO
LOCATE 10, 21
PRINT "Aktif Mesaj : "; LTRIM$(STR$(A)); ". Defa Arìyorum"
Gid$(0) = "ATDT" + T$ + CHR$(13)
CALL TerminalGidenler
DO
A$ = INKEY$
IF A$ <> "" THEN IF ASC(A$) = 27 THEN EXIT DO
CALL TerminalGelenler
LOCATE 11, 21
IF INSTR(Gelen$, "BUSY") > 0 THEN
Gelen$ = ""
PRINT "Önceki Mesaj : Meƒgul Çalìyor !! "
EXIT DO
END IF
IF INSTR(Gelen$, "NO DIALTONE") > 0 THEN
Gelen$ = ""
PRINT "Önceki Mesaj : Çevir Sesi Alìnamadì !!"
EXIT DO
END IF
IF INSTR(Gelen$, "NO ANSWER") > 0 THEN
Gelen$ = ""
PRINT "Önceki Mesaj : Cevap Vermiyor !! "
EXIT DO
END IF
IF INSTR(Gelen$, "CONNECT") > 0 THEN
Gelen$ = ""
Ekran = 0
HatDolu = 1
RR = FIX(TIMER)
EXIT SUB
END IF
LOOP
PLAY Muzik$
LOOP
Ekran = 0
CALL ModemKapa
CALL ConfigOku
CALL ModemAc
EXIT SUB
END IF
CASE 83, 115
Sec$(V) = SPACE$(149)
LSET Veri$ = "Z"
PUT #6, V
END SELECT
END IF
LOOP
EkYaz:
LOCATE VeriAlYatay, MenuDikey + 2
PRINT LEFT$(Sec$(V), 30)
LOCATE VeriAlYatay, MenuDikey + 33
PRINT MID$(Sec$(V), 31, 20)
LOCATE VeriAlYatay, MenuDikey + 54
PRINT MID$(Sec$(V), 51, 6)
RETURN
DosyaOku:
DosyaAd$ = "MODEM.TEL"
DosyaBoy = 150
CALL DosyaAc
I1 = 20
IF LOF(6) / 150 < 20 THEN I1 = LOF(6) / 150 + 1
IF LOF(6) / 150 < Sontel THEN Sontel = 1
FOR I = 1 TO I1
GET #6, I
Sec$(I) = SPACE$(149)
IF MID$(Veri$, 1, 1) = "G" THEN Sec$(I) = RIGHT$(Veri$, 149)
NEXT
RETURN
Durum:
Sec1$(1) = MID$(Eski$, 1, 30)
Sec1$(2) = MID$(Eski$, 31, 20)
Sec1$(3) = MID$(Eski$, 51, 6)
IF Sec1$(3) = SPACE$(6) THEN Sec1$(3) = Baud$ ELSE Baud$ = Sec1$(3)
Sec1$(4) = MID$(Eski$, 57, 6)
IF Sec1$(4) = SPACE$(6) THEN Sec1$(4) = Echo$ ELSE Echo$ = Sec1$(4)
Sec1$(5) = MID$(Eski$, 63, 30)
IF Sec1$(5) = SPACE$(30) THEN Sec1$(5) = Kim$
Sec1$(6) = MID$(Eski$, 93, 16)
Sec1$(7) = MID$(Eski$, 109, 40)
FOR I = 1 TO 3
Mak$(I) = ""
NEXT
IF INSTR(Sec1$(7), " ÿsim + ₧ifre ") > 0 THEN
Mak$(1) = RTRIM$(Sec1$(5)) + "^M"
Mak$(2) = RTRIM$(Sec1$(6)) + "^M"
END IF
IF INSTR(Sec1$(7), " ÿsim + E + ₧ifre ") > 0 THEN
Mak$(1) = RTRIM$(Sec1$(5)) + "^ME^M"
Mak$(2) = RTRIM$(Sec1$(6)) + "^M"
END IF
IF INSTR(Sec1$(7), " ÿsim + Y + ₧ifre ") > 0 THEN
Mak$(1) = RTRIM$(Sec1$(5)) + "^MY^M"
Mak$(2) = RTRIM$(Sec1$(6)) + "^M"
END IF
IF INSTR(Sec1$(7), " Esc + Esc + ÿsim + E + ₧ifre ") > 0 THEN
Mak$(1) = CHR$(27) + CHR$(27)
Mak$(2) = RTRIM$(Sec1$(5)) + "^ME^M"
Mak$(3) = RTRIM$(Sec1$(6)) + "^M"
END IF
IF INSTR(Sec1$(7), " Esc + Esc + ÿsim + Y + ₧ifre ") > 0 THEN
Mak$(1) = CHR$(27) + CHR$(27)
Mak$(2) = RTRIM$(Sec1$(5)) + "^MY^M"
Mak$(3) = RTRIM$(Sec1$(6)) + "^M"
END IF
RETURN
Ekle:
V9 = V
Eski$ = Sec$(V)
VeriAlYatay = 9
GOSUB Durum
Ekle2:
PCOPY 3, 0
Sec$(1) = "Karƒì sistemin ünvanì"
Sec$(2) = "Telefon No"
Sec$(3) = "Baºlantì Hìzì"
Sec$(4) = "Echo"
Sec$(5) = "Üye Adì Soyadì"
Sec$(6) = "₧ifre"
Sec$(7) = "Otomatik ÿƒlemler"
Sec$(0) = "[ Telefon Defteri ]"
MenuYatay = 8
MenuDikey = 9
MenuGenis = 60
MenuYuksek = 8
CALL CerceveCiz
LOCATE MenuYatay, MenuDikey + MenuGenis - 5
PRINT V9
VeriTipi = 3
FOR I = 1 TO 7
COLOR Renk(9), Renk(10)
LOCATE MenuYatay + I, MenuDikey + 2
PRINT Sec$(I)
COLOR Renk(1), Renk(2)
LOCATE MenuYatay + I, MenuDikey + LEN(Sec$(I)) + 3
PRINT Sec1$(I)
NEXT
DO
V = VeriAlYatay - MenuYatay
IF V = 3 THEN
CALL BaudSec
VeriAlYatay = VeriAlYatay + V8
Sec1$(3) = Baud$
GOTO Ekle2
END IF
IF V = 4 THEN
Sec1$(0) = Echo$
Sec$(0) = ""
Cer$ = ""
CALL Secim
Cer$ = "Esc)Tamam"
Sec1$(4) = MID$(Sec$(Yatay - MenuYatay), 3, 6)
VeriAlYatay = VeriAlYatay + V8
Echo$ = Sec1$(4)
GOTO Ekle2
END IF
IF V = 7 THEN
CALL OtomatikSec
VeriAlYatay = 9
Sec1$(7) = LEFT$(Oto$ + SPACE$(40), 40)
GOTO Ekle2
END IF
VerialDikey = MenuDikey + LEN(Sec$(V)) + 3
VerialBoy = LEN(Sec1$(V))
Verial$ = Sec1$(V)
CALL Verialma
COLOR Renk(1), Renk(2)
LOCATE MenuYatay + V, MenuDikey + LEN(Sec$(V)) + 3
PRINT Verial$
Sec1$(V) = Verial$
SELECT CASE Z
CASE 80
CALL Artma
V8 = 1
CASE 72
CALL Eksilme
V8 = -1
CASE 27
EXIT DO
CASE 13
CALL Artma
V8 = 1
END SELECT
LOOP
Eski$ = SPACE$(149)
MID$(Eski$, 1, 30) = Sec1$(1)
MID$(Eski$, 31, 20) = Sec1$(2)
MID$(Eski$, 51, 6) = Sec1$(3)
MID$(Eski$, 57, 6) = Sec1$(4)
MID$(Eski$, 63, 30) = Sec1$(5)
MID$(Eski$, 93, 16) = Sec1$(6)
MID$(Eski$, 109, 40) = Sec1$(7)
LSET Veri$ = "G" + Eski$
PUT #6, V9
RETURN
SonYaz:
GOSUB DosyaOku
CLOSE #6
KILL DosyaAd$
A$ = "MO $$.TE$"
CLOSE #5
OPEN "R", #5, A$, DosyaBoy
FIELD #5, DosyaBoy AS Veri$
V9 = 0
FOR I = 1 TO I1
IF Sec$(I) <> SPACE$(149) THEN
V9 = V9 + 1
LSET Veri$ = "G" + Sec$(I)
PUT #5, V9
END IF
NEXT
CLOSE #5
NAME A$ AS DosyaAd$
RETURN
END SUB
SUB Terminal
Basla:
Gid$(9) = ""
IF Ekran$ = "ANSI" AND Ekra$ = "TTY " THEN Mesaj$ = " ANSI.SYS Yüklü Deºil !!": CALL MesajYazTerminal
PCOPY 3, 0
LOCATE , , 1
CALL ModemAc
Gelen$ = ""
Ekran = 5
Gid$(0) = "ATZ" + CHR$(13)
CALL TerminalGidenler
Mesaj$ = "!Modem install ediliyor,biraz bekleyin..."
MesajYaz
RR = FIX(TIMER)
DO
IF FIX(TIMER) - RR > 5 THEN
Mesaj$ = "1Hatalì giriƒ var, kurulum tekrarlanacak, reset için bir tuƒsa basìn."
MesajYaz
CLOSE #3
KILL "MODEM.KUR"
DEF SEG = &HFFFF
CALL absolute(0)
END IF
IF LOC(1) > 0 THEN
A$ = A$ + INPUT$(LOC(1), #1)
IF INSTR(A$, "OK" + CHR$(13) + CHR$(10)) > 0 THEN EXIT DO
END IF
LOOP
COLOR Renk(2), Renk(1)
CLS
LOCATE 2, 1, 1
CALL EkranAc
Ekran = 0
HatDolu = 0
IF Kosul$ = "Açìk " THEN Mkr$ = RTRIM$(Katar$) + CHR$(13)
DO
CALL TerminalGelenler
IF Ekran = 0 AND HatDolu = 0 THEN CALL EkranUstuYaz
IF HatDolu = 1 AND Oto = 1 AND Makro < 3 THEN
Makro = Makro + 1
Mkr$ = Mkr$ + Mak$(Makro)
END IF
Gid$(0) = INKEY$
IF Mkr$ <> "" THEN
Gid$(0) = LEFT$(Mkr$, 1)
IF Gid$(0) = "^" THEN
IF MID$(Mkr$, 2, 1) = "M" THEN Gid$(0) = CHR$(13)
Mkr$ = RIGHT$(Mkr$, LEN(Mkr$) - 1)
END IF
END IF
IF Gid$(0) <> "" THEN
IF LEN(Gid$(0)) = 2 THEN
Z = ASC(RIGHT$(Gid$(0), 1))
IF Z = 45 THEN CALL ModemKapa: EXIT SUB
IF Z = 77 THEN Gid$(0) = " ": GOSUB Giden
IF Z = 75 THEN Gid$(0) = CHR$(8): GOSUB Giden
IF Z = 80 THEN Gid$(0) = CHR$(13) + CHR$(10): GOSUB Giden
CALL TerminalMakrolar
IF Gid$(9) = "1" THEN GOTO Basla
ELSE
Z = ASC(Gid$(0))
DEF SEG = &H40
ALT = PEEK(&H17) AND 4
IF ALT = 4 AND Z < 27 AND Mkr$ = "" THEN
Tu$ = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
T$ = MID$(Tu$, Z, 1)
FOR I = 1 TO 36
IF LEFT$(Makro$(I), 1) = T$ THEN Mkr$ = RTRIM$(MID$(Makro$(I), 2, 50))
NEXT
ELSE
IF Mkr$ <> "" THEN Mkr$ = RIGHT$(Mkr$, LEN(Mkr$) - 1)
GOSUB Giden
END IF
END IF
END IF
LOOP
Giden:
GelGid$ = Gid$(0)
CALL TerminalGidenler
RETURN
END SUB
SUB TerminalChatGelen
IF ASC(Z$) = 10 THEN EXIT SUB
IF ASC(Z$) = 13 OR LEN(Gel$(Chat(1))) = 70 THEN
Chat(1) = Chat(1) + 1
IF Chat(1) = 9 THEN
Gel$(9) = ""
FOR I = 1 TO 8
Gel$(I) = LEFT$(Gel$(I + 1) + SPACE$(70), 70)
LOCATE 14 + I, MenuDikey + 1
PRINT Gel$(I);
NEXT
Gel$(8) = ""
Chat(1) = 8
END IF
ELSE
T = LEN(Gel$(Chat(1)))
IF Z$ = CHR$(8) AND T > 0 THEN
Gel$(Chat(1)) = LEFT$(Gel$(Chat(1)), T - 1)
LOCATE 14 + Chat(1), MenuDikey + 1
PRINT Gel$(Chat(1)); " "
ELSE
IF Z$ <> CHR$(8) THEN Gel$(Chat(1)) = Gel$(Chat(1)) + Z$
END IF
END IF
LOCATE 14 + Chat(1), MenuDikey + 1
PRINT Gel$(Chat(1));
LOCATE , , 1
END SUB
SUB TerminalChatGiden
IF ASC(Gid$(0)) = 13 OR LEN(Gid$(Chat(0))) = 70 THEN
Chat(0) = Chat(0) + 1
IF Chat(0) = 9 THEN
Gid$(9) = ""
FOR I = 1 TO 8
Gid$(I) = LEFT$(Gid$(I + 1) + SPACE$(70), 70)
LOCATE 2 + I, MenuDikey + 1
PRINT Gid$(I);
NEXT
Gid$(8) = ""
Chat(0) = 8
END IF
ELSE
T = LEN(Gid$(Chat(0)))
IF Gid$(0) = CHR$(8) AND T > 0 THEN
Gid$(Chat(0)) = LEFT$(Gid$(Chat(0)), T - 1)
LOCATE 2 + Chat(0), MenuDikey + 1
PRINT Gid$(Chat(0)); " "
END IF
IF Gid$(0) <> CHR$(8) THEN Gid$(Chat(0)) = Gid$(Chat(0)) + Gid$(0)
END IF
LOCATE 2 + Chat(0), MenuDikey + 1
PRINT Gid$(Chat(0));
LOCATE , , 1
END SUB
SUB TerminalGelenler
IF Ekran = 1 THEN EXIT SUB
DO
Gel$(0) = ""
IF LOC(1) THEN Gel$(0) = INPUT$(LOC(1), #1)
IF Gel$(0) = "" THEN EXIT DO
Gelen$ = Gelen$ + Gel$(0)
IF Ekran = 5 THEN EXIT SUB
IF LEN(Gelen$) > 250 THEN Gelen$ = RIGHT$(Gelen$, 100)
IF INSTR(Gelen$, CHR$(12)) > 0 THEN Oto = 1
IF Tutanak$ = "Açìk " THEN
FOR I = 1 TO LEN(Gel$(0))
Z$ = MID$(Gel$(0), I, 1)
LSET Veri1$ = Z$: PUT #7, LOF(7) + 1
NEXT
END IF
IF Ekran = 3 THEN
FOR I = 1 TO LEN(Gel$(0))
Z$ = MID$(Gel$(0), I, 1)
CALL TerminalChatGelen
NEXT
ELSE
IF Ekran = 0 THEN
IF Ek$ = "CON" THEN
IF HatDolu = 0 THEN PRINT #2, CHR$(27); "[32;44m";
PRINT #2, Gel$(0);
ELSE
IF HatDolu = 0 THEN COLOR Renk(7)
FOR I = 1 TO LEN(Gel$(0))
Z$ = MID$(Gel$(0), I, 1)
IF Z$ <> CHR$(13) THEN PRINT #2, Z$;
NEXT
END IF
END IF
END IF
IF Ekran < 4 THEN CALL TerminalGelenleriYorumla
LOOP
END SUB
SUB TerminalGelenleriYorumla
IF HatDolu = 1 AND INSTR(Gelen$, "NO CARRIER") > 0 THEN
Gid$(0) = CHR$(10) + CHR$(13)
Gelen$ = ""
CALL TerminalGidenler
CALL TerminalGelenler
HatDolu = 0
Mesaj$ = " Baºlantì Kesildi !!"
CALL MesajYazTerminal
Sec1$(1) = "1"
END IF
IF HatDolu = 1 THEN
FOR I = 1 TO 5
IF INSTR(Gelen$, Protokol$(I)) > 0 THEN
Gelen$ = ""
CALL EkranSakla
CALL ProtokolOku
A$ = MID$(Sec1$(I), 17, 12)
B$ = MID$(Sec1$(I), 29, 30)
CALL AlmaDizinineGec
SHELL Dizin$(4) + A$ + B$
CHDIR ".."
CALL EkranKoy
END IF
NEXT
END IF
IF HatDolu = 1 THEN EXIT SUB
IF INSTR(Gelen$, "CONNECT") > 0 THEN
Gelen$ = ""
Ekran = 0
HatDolu = 1
END IF
IF INSTR(Gelen$, "RING") > 0 THEN
Gelen$ = ""
FOR I = 1 TO 15
SOUND 600, 1
SOUND 1200, 1
NEXT
IF Cevap$ = "Açìk " THEN
Gid$(0) = CHR$(13) + CHR$(10) + "ATA" + CHR$(13)
CALL TerminalGidenler
ELSE
Mesaj$ = " Biri sizi arìyor. Cevaplamak için Alt+O' ya basìnìz"
CALL MesajYazTerminal
END IF
Gelen$ = ""
END IF
END SUB
SUB TerminalGidenler
FOR I = 1 TO LEN(Gid$(0))
PRINT #1, MID$(Gid$(0), I, 1);
CALL TerminalGelenler
NEXT
IF Ekran = 0 AND Echo$ = "Açìk " THEN
IF HatDolu = 0 THEN
IF Ek$ = "CON" THEN PRINT #2, CHR$(27); "[33;44m"; ELSE COLOR Renk(2), Renk(1)
END IF
PRINT #2, Gid$(0);
END IF
IF Ekran = 3 THEN CALL TerminalChatGiden
END SUB
SUB TerminalMakrolar
IF Z = 37 THEN
CALL ModemKapa
CALL ModemAc
Mesaj$ = " Baºlantì Kesildi !!"
CALL MesajYazTerminal
Sec1$(1) = "1"
END IF
IF Z = 48 THEN
IF Ekran = 0 THEN
CALL EkranSakla
Ekran = 3
PCOPY 3, 0
MenuYatay = 2
MenuDikey = 4
MenuGenis = 70
MenuYuksek = 9
Cer$ = ""
Sec$(0) = ""
CALL CerceveCiz
LOCATE MenuYatay, MenuDikey + 5
PRINT "[ Sizin Yazdìklarìnìz ]"
MenuYatay = 14
CALL CerceveCiz
Cer$ = "Esc)Tamam"
LOCATE MenuYatay, MenuDikey + 5
PRINT "[ Karēdan Gelenler ]"
FOR I = 1 TO 9
Gel$(I) = ""
Gid$(I) = ""
NEXT
LOCATE 3, MenuDikey + 1, 1
Chat(0) = 1
Chat(1) = 1
COLOR Renk(1), Renk(2)
Mesaj$ = "1Chat Modu Çìkìƒì yine Alt+B'dir"
CALL MesajYaz
Mkr$ = Tercih$
ELSE
Ekran = 0
CALL EkranKoy
END IF
END IF
IF Ekran = 3 THEN EXIT SUB
IF Z = 44 THEN CALL Pencere
IF Z = 46 THEN
COLOR Renk(2), Renk(1)
CLS
LOCATE 2, 1
END IF
IF Z = 73 THEN
CALL EkranSakla
CALL DosyaGonder
CALL EkranKoy
END IF
IF Z = 81 THEN
CALL EkranSakla
CALL DosyaAl
CALL EkranKoy
END IF
IF Z = 30 THEN
CALL EkranSakla
CALL Kurulumlar
CALL EkranKoy
END IF
IF Z = 20 THEN
CALL EkranSakla
CALL TelefonDefteri
CALL EkranKoy
END IF
IF Z = 32 THEN
CALL EkranSakla
CLS
PRINT "Geri Dönüƒ için EXIT yazmalìsìnìz..."
SHELL ""
CALL EkranKoy
END IF
IF Z = 18 THEN
IF Echo$ = "Açìk " THEN Echo$ = "Kapalì" ELSE Echo$ = "Açìk "
Mesaj$ = " Local Echo ₧imdi " + Echo$
CALL MesajYazTerminal
END IF
IF Z = 24 THEN
IF Cevap$ = "Açìk " THEN Cevap$ = "Kapalì" ELSE Cevap$ = "Açìk "
Mesaj$ = " Otomatik Cevap Verme ₧imdi " + Cevap$
CALL MesajYazTerminal
END IF
IF Z = 31 THEN
IF Ses$ = "Açìk " THEN
Ses$ = "Kapalì"
Muzik$ = "P1"
ELSE
Ses$ = "Açìk "
Muzik$ = "O2L8CD"
END IF
Mesaj$ = " Ses ₧imdi " + Ses$
IF Ses$ = "Kapalì" THEN Muzik$ = "P4"
CALL MesajYazTerminal
END IF
END SUB
SUB TutanakAc
CLOSE #7
OPEN "R", #7, DosyaAdi$, DosyaBoyu
FIELD #7, DosyaBoyu AS Veri1$
END SUB
SUB Verialma
IF Verial$ = "" THEN Verial$ = SPACE$(VerialBoy)
F = 1: G = 1
DO
LOCATE VeriAlYatay, VerialDikey
COLOR Renk(5), Renk(6)
IF F > VerialBoy THEN F = VerialBoy: G = 0
PRINT Verial$
LOCATE VeriAlYatay, VerialDikey + F - 1, 1
IF JL = 1 THEN LOCATE , , , 4, 7 ELSE LOCATE , , , 6, 7
DEF SEG = 0: POKE 1050, PEEK(1052)
DO
Tus$ = INKEY$
IF Mkr$ <> "" THEN
Tus$ = LEFT$(Mkr$, 1)
Mkr$ = RIGHT$(Mkr$, LEN(Mkr$) - 1)
END IF
IF Tus$ <> "" THEN EXIT DO
LOOP
IF LEN(Tus$) = 2 THEN
Z = ASC(RIGHT$(Tus$, 1))
SELECT CASE Z
CASE 77
F = F + 1
CASE 75
IF F > 1 THEN F = F - 1
CASE 83
Verial$ = LEFT$(Verial$, F - 1) + RIGHT$(Verial$, VerialBoy - F) + " "
CASE 82
IF JL = 0 THEN JL = 1 ELSE JL = 0
CASE 80, 72, 73, 81
IF VeriTipi < 5 THEN EXIT DO
END SELECT
ELSE
Z = ASC(Tus$)
DEF SEG = &H40
ALT = PEEK(&H17) AND 4
IF ALT = 4 AND Z < 27 THEN
Tu$ = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
T$ = MID$(Tu$, Z, 1)
FOR I = 1 TO 36
IF LEFT$(Makro$(I), 1) = T$ THEN Mkr$ = RTRIM$(MID$(Makro$(I), 2, 50))
NEXT
ELSE
SELECT CASE Z
CASE 27, 13, 9, 240
EXIT DO
CASE ELSE
IF Z = 242 THEN
JL = 1
Tus$ = CHR$(SCREEN(VeriAlYatay, VerialDikey + F - 1))
Y = INSTR(Al$(0), Tus$)
IF Y > 0 THEN Tus$ = MID$(Al$(1), Y, 1)
END IF
IF Z = 8 THEN
IF F > 1 THEN
F = F - 1
Verial$ = LEFT$(Verial$, F - 1) + RIGHT$(Verial$, VerialBoy - F) + " "
END IF
ELSE
Normal = 0
IF INSTR(Al$(VeriTipi), Tus$) > 0 THEN Normal = 1
IF Normal = 1 THEN
IF JL = 1 THEN MID$(Verial$, F, 1) = Tus$ ELSE Verial$ = LEFT$(Verial$, F - 1) + Tus$ + MID$(Verial$, F, VerialBoy - F)
F = F + 1
ELSE
Mesaj$ = " Geçersiz (rakam veya harf) Tuƒa Basìldì"
CALL MesajYaz
END IF
END IF
END SELECT
END IF
END IF
LOOP
END SUB